singleton design pattern in c